Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Frequently, the electronic systems designed to provide these results include memories. However, accessing memory resources in a fast and efficient manner can involve complicated protocols.
Numerous electronic devices include processors that operate by executing software comprising a series of instructions for manipulating data in the performance of useful tasks. The instructions and associated data are typically stored in a memory. Memories usually consist of a location for storing information and a unique indicator or address. The utility a device provides often depends upon the speed and efficiency at which instructions are executed. The ability to access a memory and transfer information quickly and conveniently usually has a significant impact on information processing latency. The configuration of a memory usually affects the speed at which memory locations are accessed.
Traditional attempts at memory control are often very convoluted and complex. HyperTransport and similar protocols generally operate according to a multi-drop bus model and use a token exchange protocol to manage network traffic between devices in the system. With these protocols, communication traffic (in the form of data and/or requests) is scheduled through the exchange and accounting of tokens, the tokens referring to segments of available resources. Utilization of a protocol such as this generally produces inefficiency and overhead with regards to the number of buffers required in the system by requiring more buffers available than what is actually necessary for the individual device to function to protect from overloading the devices and a subsequent loss of data. Such protocols also suffer from inefficiency and overhead in regards to latency and available bandwidth throughout the system, which can result in issues with scheduling due to unknown traffic patterns and limited resources. As a result of these inefficiencies, the system becomes non-optimal and non-deterministic.
Furthermore, the network of a computer system utilizing a contemporary network traffic management model (e.g. a multi-drop bus) to communicate requests and transfer data between devices will generally have a fixed bandwidth, but a variable latency, and at any time during a customary operating cycle will have an unknown number of requests in the network. As such, the ability to schedule an unknown number of requests to maximize the efficiency of the network becomes difficult for the scheduling controller. The indeterminate latency also has the effect of creating very long average latencies in the network, requiring complex control mechanisms or large buffer sizes, or combinations of the above, to manage the traffic effectively. Furthermore, loading and signal integrity limitations of standard multi-drop bus models employed in conventional approaches limit the capacity and speed of the network. Additional protocol limitations may restrict the types of devices that are allowed to utilize the bus.
Conventional chain systems (also referred to as a “daisy chain type systems”) attempt to address problems associated with multi-drop capacity and speed. However, conventional daisy chain systems often greatly increase the overall complexity, power consumption, and manageability of the system relative to a multi-drop bus model. In addition traditional chain systems usually encounter performance tradeoff issues between e latency and effective bandwidth in which reduced buffer sizes usually degrade bandwidth of the system and larger buffer sizes give rise to a corresponding increase in latency.
Furthermore, there are issues with scheduling efficiently in a typical daisy chain system. The controller in a daisy chain type system must account for scheduling constraints on each device for the entire system and cumulative scheduling impacts result in complex or unwieldy scheduling patterns. Typical daisy chain models also often employ an additional timestamp protocol within each device. The timestamps tell the device when, relative to each device, the device should perform the received commands internally. However, the protocol required for timestamping further adds to the complexity of the system, as each device is required to individually account for the timestamps and provide a queue for the requests the device has waiting to issue. However, as the queue is locally managed in the individual node it is not controllable by the system controller and the system controller is not able to accurately account for delays due to local management.